// Prim算法模版（洛谷）
// 动态空间实现
// 测试链接 : https://www.luogu.com.cn/problem/P3366
// 提交以下所有代码，可以直接通过

#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>

using namespace std;

// 时间复杂度O(n + m) + O(m * log m)

int main()
{
    int n, m;
    cin >> n >> m;
    vector<vector<pair<int, int>>> graph(n + 1);
    for(int i = 0; i < m; ++i)
    {
        int u, v, w;
        cin >> u >> v >> w;
        graph[u].emplace_back(w, v);
        graph[v].emplace_back(w, u);
    }

    // first : 到达的花费，second : 到达的节点
    // 这样安排的目的是，能够借助标准库中实现的比较函数
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
    for(auto& edge : graph[1])
    {
        q.push(edge);
    }

    // 哪些节点已经发现过了
    bool set[n + 1]{};
    int nodeCnt = 1;
    set[1] = true;
    int ans = 0;
    while(!q.empty())
    {
        auto [cost, next] = q.top();
        q.pop();
        if(!set[next])
        {
            ++nodeCnt;
            set[next] = true;
            ans += cost;
            for(auto& edge : graph[next])
            {
                q.push(edge);
            }
        }
    }

    if(nodeCnt == n)
        cout << ans << endl;
    else
        cout << "orz" << endl;

    return 0;
}